package main

import (
	"bufio"
	"encoding/json"
	"fmt"
	"math/rand"
	"os"
	"time"

)

func main()  {


	count := 0

	var name_count string
	arr := []string{"zs","ls", "ww", "ol", "fh"}
	fmt.Println("名单：", arr)

	country := make(map[string]int)

	//创建文件
	file, err := os.OpenFile("count.txt", os.O_WRONLY|os.O_CREATE, 0644)
	if err != nil {
		fmt.Println("写入文件失败：", err)
		return
	}

	//json->map
	err2 := json.Unmarshal( []byte(name_count) , &country)
	if err2 != nil {
		fmt.Println("文件内容为空")
	} else {
		fmt.Println("转换成功")
	}





	for true {
	var num string
	fmt.Print("按任意键，开始随机抽取(按q退出)")
	fmt.Scanln(&num)
	if len(arr) == 0 || num == "q"{
		fmt.Println("你的随机抽取已经结束")
		break
	} else {
		rand.Seed(time.Now().Unix())   //加入随机种子
	j := rand.Intn(len(arr))  //产生随机数


	fmt.Println("抽取到的同学是:\n", arr[j])
	country[arr[j]] = count+1
	fmt.Println("已点名次数为：", country[arr[j]])

	arr = append(arr[:j], arr[j+1:]...)
	fmt.Println("剩余的同学有：", arr)  //显示剩余的同学


	}
	}


	//map -> json
	marshal,err := json.Marshal(country)
	if err != nil {
		fmt.Println("转换出错")
	} else {
		name_count = string(marshal)
	}


	defer file.Close()  //关闭file句柄，防止内存的内容泄露
	writer := bufio.NewWriter(file)   //写入时，使用带缓存的
	defer writer.Flush()  //真正写入文件
	_, err = writer.WriteString(name_count)
	if err != nil {
		fmt.Println("写入文件失败：", err)
		return
	}
	fmt.Println("点名次数已写入文件")
}
